Hitherto, an image and voice delivery system utilizing an IP (Internet Protocol) network, such as the Internet, has been generally practiced. In an image and voice delivery system including an encoding device and a decoding device as illustrated in FIG. 9, for example, images and voices are respectively received from a camera and a microphone, which are connected to the encoding device. Respective bit trains obtained by compressing and encoding the received images and voices are converted to UDP (User Datagram Protocol) packets and are sent to the decoding device via the Internet. The decoding device decodes the UDP packets to reproduce and output the images and the voices through a monitor and a speaker.
Transfer of the IP packets in such an image and voice delivery system is usually performed by a method using TCP (Transmission Control Protocol) or a method using the UDP. In the image and voice delivery system, in which importance placed on real-time operations, the UDP, which generally involves a smaller delay time, is used instead of applying priority to the reliability of data.
In the IP network, often, packets pass through a plurality of relay devices having different levels of performance until reaching a receiving terminal from a sending terminal. A transmission band may differ among the relay devices. Therefore, physical and electrical data errors may be caused. In addition, an overflow may be caused in traffic on a relay network or in an internal buffer of a relay device, and packets may be discarded midway in some cases. To reduce the influence of such a packet loss, it has been proposed to, when packets are sent using the UDP, utilize an ARQ (Automatic Repeat reQuest) method for limiting the number of times of resending in a higher-level layer, or an FEC (Forward Error Correction) method for sending redundant packets at all times to restore lost packets.
Further, a PRO-MPEG (Moving Picture Experts Group) method has recently been used to realize an even higher level of restoration by inserting a redundant packet into packets which are two-dimensionally arrayed in a matrix of 4 rows and 5 columns, for example.
The FEC method as a base of the PRO-MPEG method is described below with reference to FIG. 10. FIG. 10 illustrates one example of a manner of producing an FEC packet. As illustrated in FIG. 10, the FEC packet is produced by computing the exclusive logical sum (XOR) per bit in ten packets, for example.
Assume, for example, that a bit train of a first packet is represented by “1, 1, 1, 0, 0, 0 . . . ”, and a bit train of a second packet is represented by “1, 0, 1, 1, 0, 1 . . . ”. In this case, a value “0” resulting from computing XOR of “1” as a first bit of the first packet and “1” as a first bit of the second packet is set to a first bit of an FEC packet. By similarly computing XOR per bit subsequent to a second bit, the FEC packet between the first packet and the second packet is obtained. Further, a next FEC packet is obtained by similarly computing XOR per bit between the above FEC packet and the third packet. By repeating similar computations until the tenth packet, one FEC packet is obtained for the ten packets.
When the decoding device on the receiving side receives the ten packets and the one FEC packet, the decoding device recognizes whether disarrangement of the packets and loss of any packets are generated, by utilizing information representing the order of the received packets (e.g., sequence numbers within RTP headers). When only one of the ten packets is lost, the lost packet is restored by computing XOR between the remaining nine packets and the FEC packet.
To restore the lost packet as described above, the encoding device is required to precisely send the FEC packet to the decoding device on the receiving side. To that end, there is proposed a method of sending packets by inserting an FEC packet as illustrated in FIG. 11, for example.
In an example of FIG. 11, the encoding device produces one FEC packet from four packets and sends the FEC packet once per five times of sending. Stated another way, after sending four media (data) packets, the encoding device sends one FEC packet which is produced from those four packets. Such a method is advantageous in providing a low total rate of the data packets and the FEC packet because an insertion frequency of the FEC packet is low. However, such a method is not adaptable for loss of successive packets (e.g., cannot recover lost packets when the lost packets are successive).
In the PRO-MPEG method, the FEC packets are inserted in a two-dimensional row and column pattern. A manner of inserting the FEC packets based on the PRO-MPEG method is described below with reference to FIG. 12. In the PRO-MPEG method using a matrix of 4 rows and 5 columns, as illustrated in FIG. 12, the encoding device inserts one FEC packet for every 5 packets in the row direction similarly to the FEC method, and further inserts one FEC packet for every 4 packets in the column direction.
For example, a row-direction FEC packet FEC′1 in the first row is produced by computing XOR per bit for packets Pkt1 to 5 which are successively arranged. Also, a column-direction FEC packet FEC1 in the first column is produced by computing XOR per bit for packets Pkt1, 6, 11 and 16 which are discretely arranged. The row-direction FEC packet is sent, for example, at the timing after the row-direction five packets Pkt1 to 5 have been sent. For such a reason as to avoid a situation where data packets are not sent successively, the column-direction FEC packets are discretely sent at the timings when specified packets in a packet group Pkt21 to 40 arranged in a subsequent matrix are sent.
The feature of the PRO-MPEG method of producing the FEC packets to be inserted in a two-dimensional matrix is now described with reference to FIG. 13. FIG. 13 illustrates the feature of the PRO-MPEG method. As seen from FIG. 13, the PRO-MPEG method is adaptable (e.g., can recover lost packets) even for the case where packets are successively lost and the lost packets cannot be restored by the FEC method.
For example, when the packets Pkt1 to 5 are lost successively, the packet Pkt1 can be restored (as denoted by m1) by receiving the column-direction FEC packet (FEC1) for the first column. Also, the packet Pkt2 can be restored (as denoted by m2) by receiving the column-direction FEC packet (FEC2) for the second column. Further, the packets Pkt3 and Pkt4 can be restored (as denoted by m3 and m4) by receiving the column-direction FEC packets FEC3 and FEC4, respectively. With the restoration of the packets Pkt1 to 4, the packet Pkt5 can be restored (as denoted by m5) from the packet Pkt4 and FEC′1.
Japanese Unexamined Patent Application Publication No. 2008-131153 discloses a technique for storing the above-described FEC packets separately from the data packets and executing an FEC computation process dividedly at different times for an error correction process, thereby reducing and/or preventing an abrupt increase in amount of computations.